2e6c07f07450408373a7e2436d1d8de6c7fb80a5,Script_1/src/Parser/ASTs/ExprAccs_Arr.java,ExprAccs_Arr,checkType,#CodeGenerator#,42

Before Change


		t2.setDims(d2);
		t2.setEleType(((T_Array)t1).getEleType());
		t2.genTypeSig(codegen);
		if(!codegen.getTypeInSymTb(this.ref_type).canAsnFrom(codegen,t2))
			return false;
		return true;
	}

After Change


		codegen.putTypeInSymTb(this.rst_type, t);
		return true;
	}
	public boolean checkType(CodeGenerator codegen)throws TypeCheckException{
		if(!this.pre_fld.checkType(codegen))
			return false;
		if(!this.dim_lst.checkType(codegen))
			return false;
		T_Type t1=codegen.getTypeInSymTb(this.pre_fld.rst_type);
		if(t1.getKType()!=T_Type.KType.t_arr)
			return false;
		int d1=((T_Array)t1).getDims();//pre_field's dimension
		if(d1<this.dim_lst.dim_n)
			return false;
		int d2=d1-this.dim_lst.dims.size();//rst_val's dimension
		if(d2==0){
			this.rst_type=((T_Array)t1).getEleType();
			if(this.ref_type==null)return true;
			if(codegen.getTypeInSymTb(this.ref_type).canAsnFrom(codegen,codegen.getTypeInSymTb(this.rst_type)))
				return true;
			else
				throw new TypeCheckException("type error: array exp "+this.pre_fld.rst_val);
		}else{
			String elet=((T_Array)t1).getEleType()+"["+d2+"]";
			this.rst_type=elet;
			if(this.ref_type==null)return true;
			T_Type t2=codegen.getTypeInSymTb(this.ref_type);
			if(t2.getKType()==T_Type.KType.t_arr&&((T_Array)t2).getEleType().equals(elet)&&((T_Array)t2).getDims()==d2){
				return true;
			}else